package com.wjm.JavaSEAPI.date;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

/**
 * Data:2022年07月04日
 * Author:wjm
 * Content: DateTimeFormatter类介绍
 *
 *
 * DateTimeFormatter是专门用于对LocalDateTime进行自定义日期时间格式化输出的
 * jdk1.8之后出现的
 *
 */
public class DateTimeFormatterDemo {
    public static void main(String[] args) {
        /*
        * 对日期时间格式化输出  也就是将LocalDateTime对象转换为String对象
        * */
        LocalDateTime localDateTime = LocalDateTime.now();
        //创建格式化对象
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //ofPattern的重载方法
        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
        String time = dateTimeFormatter.format(localDateTime);
        String time1 = dateTimeFormatter1.format(localDateTime);
        System.out.println(time);
        System.out.println(time1);


        /*
        * 解析  就是将Steing对象转换为LocalDateTime对象
        * */
        String str = "2001-11-07 22:22:22";
        DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime1 = LocalDateTime.parse(str,dateTimeFormatter3);
        System.out.println(localDateTime1);


        /*
        * LocalDateTime是支持链式调用的
        * */
        //创建一个自定义的时间对象
        LocalDateTime dt = LocalDateTime.of(2001,10,31,22,22,22);
        System.out.println(dt);
        //加5天减去3小时
        LocalDateTime dt1 = dt.plusDays(5).minusHours(3);//这就是链式调用
        System.out.println(dt1);
        //减去一个月 注意10月是有31号的当减去最后一个月的时候到9月它会自动跳到9月最后一天也就是9月30号
        LocalDateTime dt2 =dt1.minusMonths(1);
        System.out.println(dt2);




    }
}
